package cn.foolishbird.crow.attribute.permission;


import cn.foolishbird.crow.resource.permission.api.ResourcePermissionApi;
import cn.foolishbird.crow.resource.permission.Role;

import java.util.List;

/**
 * @author foolish bird
 * @email luohongtu@foolishbird.cn
 */
public interface AttributePermissionService extends ResourcePermissionApi {

    /**
     * @param roleNo       角色编号
     * @param attributeNos 属性编号
     * @return 设置是否成功
     */
    boolean refreshAttributesInRole(String roleNo, List<String> attributeNos);


    /**
     * @param userNo 用户编号
     * @return 用户属性权限
     */
    List<? extends Attribute> attributes(String userNo);

    /**
     * 根据用户编号，查询用户权限
     *
     * @param userNo         用户编号
     * @param fillPermission 是否填充资源权限
     * @return 用户角色
     */
    default List<? extends Role> roles(String userNo, boolean fillPermission) {
        return this.roles(userNo, fillPermission, false);
    }

    /**
     * 根据用户编号，查询用户权限
     *
     * @param userNo         用户编号
     * @param fillPermission 是否填充资源权限
     * @param fillAttribute  是否填充属性权限
     * @return 用户角色
     */
    List<? extends Role> roles(String userNo, boolean fillPermission, boolean fillAttribute);
}
